什麼是OneHot encoding?
一句話來說OneHot encoding將特徵轉為方便類神經網路運算的模式。
怎麼說呢?
很多時候特徵不會是數字,例如:男人、女人、貓、狗...等
這種時候我們會將它轉成數字,例如:[male,female,unknown]變成[0,1,2]這個步驟是label encoding
可是這樣的做法假設有n個特徵,就會產生0到n這些特徵。有一種方法可以讓特徵從0,1,2,3,4,5...n變成只有0和1,這就是OneHot encoding在做的事。
為什麼不能用數字(label encoding)就好了,一定要0和1呢?
因為神經網路的運算當中有許多需要取平均的情況。
假設我們今天有[dog,cat,rabbit,fish]記錄為[0,1,2,3]
0+2/2=1,這意味著dog和rabbit平均之後會變成cat,這是一件很糟糕的事。
那麼Onehot encoding是怎麼運行的呢?
假設今天有四類特徵[0,1,2,3]
會產生[1000,0100,0010,0001]
依此類推。
參考資料:
https://www.itread01.com/content/1501748526.html
https://codertw.com/人工智慧/95606/
https://zhuanlan.zhihu.com/p/37471802